package com.xatu.yl.storeshopping.activity.Fragment.ShoppingInfoFragment;


import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.example.namespace.R;
import com.xatu.yl.storeshopping.activity.ShoppingInfoActivity;
import com.xatu.yl.storeshopping.vo.CommentInfo;
import com.xatu.yl.storeshopping.vo.ShopInfo;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class CommentFragment extends Fragment implements AdapterView.OnItemClickListener {
    private View root;
    private List<CommentInfo> commentInfoList = new ArrayList<>();
    private ListView comment_list;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //如果不存在，则创建
        if(root==null){
            root=inflater.inflate(R.layout.comment_fragment, container, false);
        }

        comment_list = root.findViewById(R.id.comment_list);
        comment_list.setOnItemClickListener(this);

        getCommentList();
        return root;
    }

    private void getCommentList(){

    }

    //点击列表项
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        //跳转到商品界面
        startActivity(new Intent(getActivity(), ShoppingInfoActivity.class));
    }

    //适配器，加载整个pro_list中的内容
    public class CommentListAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return commentInfoList.size();
        }

        @Override
        public Object getItem(int i) {
            return commentInfoList.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            View item = View.inflate(getActivity().getApplicationContext(), R.layout.comment_list_items, null);

            /**
             * userIcon：用户图标
             * nickName：用户名，不是用户id
             * isBuy：是否购买
             * commentDate：评论日期
             * commentContent：评论内容
             * commnetPhoto：评论拍摄的照片
             */
            ImageView userIcon = item.findViewById(R.id.userIcon);
            TextView nickName = item.findViewById(R.id.nickName);
            TextView isBuy = item.findViewById(R.id.isBuy);
            TextView commentDate = item.findViewById(R.id.commentDate);
            TextView commentContent = item.findViewById(R.id.commentContent);
            ImageView commentPhoto = item.findViewById(R.id.commentPhoto);

            //从集合中获取数据
            CommentInfo commentInfo = commentInfoList.get(i);
            //用户图标
            commentInfo.getCommentUserInfoList().get(0).getUserIcon();
            //用户昵称
            nickName.setText(commentInfo.getCommentUserInfoList().get(0).getNickName());
            isBuy.setText(commentInfo.getIsBuy());
            commentDate.setText(commentInfo.getCommentDate());
            commentContent.setText(commentInfo.getCommentContent());
            //评论图片
            commentInfo.getCommentPhoto();

            return item;
        }
    }


    /**
     * 1.网络请求和图片加载：
     * 在 AsyncTask 的 doInBackground 方法中，我们执行网络请求，获取指定URL的图片数据流，并通过 BitmapFactory.decodeStream 方法将其解码为 Bitmap 对象。
     * 2.异步加载：
     * 使用 AsyncTask 来异步执行图片加载操作，确保在主线程之外进行网络请求，以避免阻塞主线程，从而保持应用的响应性。
     * 3.显示图片：
     * 在 onPostExecute 方法中，我们检查解码后的 Bitmap 是否为空，如果不为空，则将其设置到预先定义的 ImageView 中显示出来。
     * 4.为了避免 NetworkOnMainThreadException 异常，不能在主线程中执行网络请求。因此，使用 AsyncTask 或者其他异步加载方式是推荐的做法。
     */

    private class LoadImageTask extends AsyncTask<String, Void, Bitmap> {

        private ImageView imageView;
        public LoadImageTask(ImageView imageView){
            this.imageView = imageView;
        }
        @Override
        protected Bitmap doInBackground(String... strings) {
            String imageUrl = strings[0];
            Bitmap bitmap = null;
            try {
                URL url = new URL(imageUrl);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                bitmap = BitmapFactory.decodeStream(input);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            if (bitmap != null) {
                imageView.setImageBitmap(bitmap);
            }
        }
    }
}


